Artigos relacionados

*   [Variáveis de ambiente](/index.php/Vari%C3%A1veis_de_ambiente "Variáveis de ambiente")

Locales, por vezes chamados em português de *localidades*, são usados pelo [glibc](https://www.archlinux.org/packages/?name=glibc) e outros programas ou bibliotecas conscientes de locales para renderizar texto, exibindo corretamente valores monetários regionais, formatos de hora e data, idiossincrasias alfabéticas e outros padrões específicas para locales.

## Contents

*   [1 Gerando locales](#Gerando_locales)
*   [2 Configurando o locale](#Configurando_o_locale)
    *   [2.1 Configurando o locale do sistema](#Configurando_o_locale_do_sistema)
    *   [2.2 Sobrepondo locale do sistema por sessão de usuário](#Sobrepondo_locale_do_sistema_por_sess.C3.A3o_de_usu.C3.A1rio)
    *   [2.3 Fazer alterações de locale imediatas](#Fazer_altera.C3.A7.C3.B5es_de_locale_imediatas)
    *   [2.4 Outros usos](#Outros_usos)
*   [3 Variáveis](#Vari.C3.A1veis)
    *   [3.1 LANG: locale padrão](#LANG:_locale_padr.C3.A3o)
    *   [3.2 LANGUAGE: locales reservas](#LANGUAGE:_locales_reservas)
    *   [3.3 LC_TIME: formato de data e hora](#LC_TIME:_formato_de_data_e_hora)
    *   [3.4 LC_COLLATE: colação](#LC_COLLATE:_cola.C3.A7.C3.A3o)
    *   [3.5 LC_ALL: solução de problemas](#LC_ALL:_solu.C3.A7.C3.A3o_de_problemas)
*   [4 Solução de problemas](#Solu.C3.A7.C3.A3o_de_problemas)
    *   [4.1 Meu terminal não possui suporte a UTF-8](#Meu_terminal_n.C3.A3o_possui_suporte_a_UTF-8)
        *   [4.1.1 Gnome-terminal ou rxvt-unicode](#Gnome-terminal_ou_rxvt-unicode)
    *   [4.2 Meu sistema ainda está usando o idioma errado](#Meu_sistema_ainda_est.C3.A1_usando_o_idioma_errado)
*   [5 Veja também](#Veja_tamb.C3.A9m)

## Gerando locales

Nomes de locales geralmente possuem a forma `idioma[território][.código][@modificador]`, sendo *idioma* um [código de idiomas da ISO 639](https://en.wikipedia.org/wiki/pt:ISO_639 "w:pt:ISO 639"), *território* um [código de países da ISO 3166](https://en.wikipedia.org/wiki/pt:ISO_3166-1#Current_codes "w:pt:ISO 3166-1") e *.código* uma [codificação de caracteres](https://en.wikipedia.org/wiki/pt:Codifica%C3%A7%C3%A3o_de_caracteres "w:pt:Codificação de caracteres") ou identificador de codificação como [ISO-8859-1](https://en.wikipedia.org/wiki/pt:ISO/IEC_8859-1 "w:pt:ISO/IEC 8859-1") ou [UTF-8](https://en.wikipedia.org/wiki/pt:UTF-8 "w:pt:UTF-8"). Veja [setlocale(3)](https://jlk.fjfi.cvut.cz/arch/manpages/man/setlocale.3).

Para uma lista de locales habilitados, execute:

```
$ locale -a

```

Antes que um locale possa ser habilitado no sistema, ele deve ser gerado. Isso pode ser alcançado descomentando as entradas corretas em `/etc/locale.gen` e executando *locale-gen*. Da mesma forma, comentar entradas desabilita seus respectivos locales. Ao fazer alterações, considere quaisquer localizações necessárias para outros usuários no sistema, bem como [#Variáveis](#Vari.C3.A1veis) específicas.

Por exemplo, descomente `pt_BR.UTF-8 UTF-8` para português brasileiro:

 `/etc/locale.gen` 
```
...
#ps_AF UTF-8  
pt_BR.UTF-8 UTF-8  
#pt_BR ISO-8859-1
...

```

Salve o arquivo e gere o locale:

```
# locale-gen

```

**Nota:**

*   `locale-gen` também é executado em toda atualização de [glibc](https://www.archlinux.org/packages/?name=glibc). [[1]](https://projects.archlinux.org/svntogit/packages.git/tree/trunk/glibc.install?h=packages/glibc#n5)
*   `UTF-8` é recomendado sobre outras codificações de caracteres. [[2]](http://utf8everywhere.org/)

## Configurando o locale

Para exibir o locale atualmente configurado e suas configurações ambientais relacionadas, digite:

```
$ locale

```

O locale a ser usado, escolhido dentre os previamente gerados, é configurado em arquivos `locale.conf`. Cada um desses arquivos deve conter uma lista, separada por nova linha, de atribuições de [variáveis de ambiente](/index.php/Vari%C3%A1veis_de_ambiente "Variáveis de ambiente"), tendo o mesmo formato que a saída de *locale*.

Para listar os locales disponíveis que foram gerados previamente, execute:

```
$ localedef --list-archive

```

Alternativamente, use [localectl(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/localectl.1):

```
$ localectl list-locales

```

### Configurando o locale do sistema

Para configurar o locale do sistema, escreva variável `LANG` no `/etc/locale.conf`, sendo que `*pt_BR.UTF-8*` pertence à **primeira coluna** de uma entrada não comentada em `/etc/locale.gen`:

 `/etc/locale.conf`  `LANG=*pt_BR.UTF-8*` 

Alternativamente, execute:

```
# localectl set-locale LANG=*pt_BR.UTF-8*

```

Veja [#Variáveis](#Vari.C3.A1veis) e [locale.conf(5)](https://jlk.fjfi.cvut.cz/arch/manpages/man/locale.conf.5) para detalhes.

### Sobrepondo locale do sistema por sessão de usuário

O locale para todo sistema pode ser sobrescrito em cada sessão de usuário criando ou editando `~/.config/locale.conf` (ou, em geral, `$XDG_CONFIG_HOME/locale.conf` ou `$HOME/.config/locale.conf`).

A precedência desses arquivos `locale.conf` é configurada em `/etc/profile.d/locale.sh`.

**Dica:**

*   Isso também pode permitir manter os logs em `/var/log` em inglês enquanto usa o idioma local na variável do usuário.
*   Você pode criar um arquivo `/etc/skel/.config/locale.conf` para que qualquer novos usuários adicionados usando *useradd* e a opção `-m` vai ter `~/.config/locale.conf` gerado automaticamente.

### Fazer alterações de locale imediatas

Uma vez que os arquivos `locale.conf` de sistema e de usuários terem sido criados ou editados, seus novos valores terão efeito para novas sessões na autenticação. Para fazer o ambiente atual usar as novas configurações, desconfigure `LANG` e carregue `/etc/profile.d/locale.sh`:

```
$ unset LANG
$ source /etc/profile.d/locale.sh

```

**Nota:** A variável `LANG` tem que ser desconfigurada primeiro, do contrário `locale.sh` não vai atualizar os valores de `locale.conf`. Apenas variáveis novas e alteradas serão atualizadas; variáveis removidas de `locale.conf` ainda estão configuradas na sessão.

### Outros usos

As variáveis de locale também podem ser definidas com os métodos padrão como explicado em [Variáveis de ambiente](/index.php/Vari%C3%A1veis_de_ambiente "Variáveis de ambiente").

Por exemplo, para testar ou depurar um aplicativo em particular durante o desenvolvimento, ele poderia ser iniciado com alguma coisa como:

```
$ LANG=C ./meu_aplicativo.sh

```

Da mesma forma, para definir o locale para todos os processo executados pela shell atual (por exemplo, durante a instalação do sistema):

```
$ export LANG=C

```

## Variáveis

Os arquivos `locale.conf` oferecem suporte às seguintes variáveis de ambiente:

*   [LANG](#LANG:_locale_padr.C3.A3o)
*   [LANGUAGE](#LANGUAGE:_locales_reservas)
*   `LC_ADDRESS`
*   [LC_COLLATE](#LC_COLLATE:_cola.C3.A7.C3.A3o)
*   `LC_CTYPE`
*   `LC_IDENTIFICATION`
*   `LC_MEASUREMENT`
*   `LC_MESSAGES`
*   `LC_MONETARY`
*   `LC_NAME`
*   `LC_NUMERIC`
*   `LC_PAPER`
*   `LC_TELEPHONE`
*   [LC_TIME](#LC_TIME:_formato_de_data_e_hora)

O significado completo das variáveis `LC_*` acima pode ser localizado na página man [locale(7)](https://jlk.fjfi.cvut.cz/arch/manpages/man/locale.7), enquanto os detalhes de suas definições estão descritas em [locale(5)](https://jlk.fjfi.cvut.cz/arch/manpages/man/locale.5).

### LANG: locale padrão

O locale configurado para essa variável será usado para todas as variáveis `LC_*` que não forem configuradas explicitamente.

### LANGUAGE: locales reservas

Os programas que usam [gettext](https://www.archlinux.org/packages/?name=gettext) para traduções respeitam a opção `LANGUAGE` além das variáveis usuais. Isso permite que usuários para especificar uma [lista](http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable) de locales que serão usados naquela ordem. Se uma tradução para o locale preferido não está disponível, outro de um locale similar será usado em vez do padrão. Por exemplo, um usuário australiano pode querer usar a ortografia britânica em vez da americana:

 `locale.conf` 
```
LANG=en_AU.UTF-8
LANGUAGE=en_AU:en_GB:en
```

### LC_TIME: formato de data e hora

Se `LC_TIME` estiver configurado para `en_US.UTF-8`, por exemplo, o formato de data será "MM/DD/AAAA". Caso prefira usar o formato de data da ISO 8601 de "AAAA-MM-DD", use:

 `locale.conf`  `LC_TIME=en_DK.UTF-8` 
**Nota:** Os programas não necessariamente respeitam essa variável para formatar a data. Por exemplo, [date(1)](https://jlk.fjfi.cvut.cz/arch/manpages/man/date.1) usa seus próprios parâmetros para fazê-lo.

### LC_COLLATE: colação

Essa variável governa as regras de colação usadas para ordenação e expressões regulares.

Configurar o valor para `C` pode, por exemplo, fazer o comando *ls* ordenar arquivos iniciados com ponto primeiro, seguidos por nomes de arquivos em maiúsculo e minúsculo:

 `locale.conf`  `LC_COLLATE=C` 

Veja também [[3]](http://superuser.com/a/448294/175967).

Para evitar problemas potenciais, o Arch costumava definir `LC_COLLATE=C` em `/etc/profile`, mas esse método está agora obsoleto.

### LC_ALL: solução de problemas

O locale configurado para essa variável sempre sobrescreverá `LANG` e todas outras variáveis `LC_*`, independentemente de estarem definidas ou não.

`LC_ALL` é a única variável `LC_*` que **não pode** ser definida em arquivos `locale.conf`: ela é feita para ser usada apenas para propósito de testar ou solucionar problemas, por exemplo, em `/etc/profile`.

## Solução de problemas

### Meu terminal não possui suporte a UTF-8

A lista a seguir mostra alguns (não todos) terminais que oferecem suporte a UTF-8:

*   gnustep-terminal
*   konsole
*   [mlterm](/index.php/Mlterm "Mlterm")
*   [rxvt-unicode](/index.php/Rxvt-unicode "Rxvt-unicode")
*   [st](/index.php/St "St")
*   [termite](/index.php/Termite "Termite")
*   [VTE-based terminals](/index.php/List_of_applications/Utilities#VTE-based "List of applications/Utilities")
*   [xterm](/index.php/Xterm "Xterm") - Execute com o argumento `-u8` ou configure o recurso `xterm*utf8: 2`.

#### Gnome-terminal ou rxvt-unicode

Você precisa iniciar esses aplicativos a partir de um locale UTF-8 ou eles não terão suporte a UTF-8\. Habilite o locale `pt_BR.UTF-8` (ou sua alternativa UTF-8 local) com as instruções acima e configure-o como o locale padrão, então reinicie.

### Meu sistema ainda está usando o idioma errado

É possível que as variáveis de ambiente sejam redefinidas em outros arquivos além de `locale.conf`, por exemplo `~/.pam_environment`. Veja [Variáveis de ambiente#Definindo variáveis](/index.php/Vari%C3%A1veis_de_ambiente#Definindo_vari.C3.A1veis "Variáveis de ambiente") para detalhes.

Se você está usando um ambiente gráfico, como o [GNOME](/index.php/GNOME_(Portugu%C3%AAs) "GNOME (Português)"), suas configurações de idioma podem estar sobrescrevendo as configurações em `locale.conf`.

[KDE](/index.php/KDE "KDE") Plasma também permite alterar o idioma da interface de usuário por meio de configurações do sistema. Se o ambiente gráfico ainda está usando o idioma padrão após a modificação, [excluir o arquivo em](https://bbs.archlinux.org/viewtopic.php?pid=1435219#p1435219) `~/.config/plasma-localerc` (anteriormente: `~/.config/plasma-locale-settings.sh`) deve resolver o problema.

## Veja também

*   [Gentoo:Localization/Guide](https://wiki.gentoo.org/wiki/Localization/Guide "gentoo:Localization/Guide")
*   [Gentoo Wiki Archives: Locales](https://web.archive.org/web/20151218174230/http://www.gentoo-wiki.info/Locales)
*   [Teste de colação interativa da ICU](http://demo.icu-project.org/icu-bin/locexp?_=en_US&x=col)
*   [Free Standards Group Open Internationalisation Initiative](http://www.openi18n.org/)
*   [*The Single UNIX Specification* definição de Locale](http://pubs.opengroup.org/onlinepubs/007908799/xbd/locale.html) por The Open Group
*   [Variáveis de ambiente de local](https://help.ubuntu.com/community/EnvironmentVariables#Locale_setting_variables)